package restaurant;
import java.util.Vector;

import carnetCommandes.CarnetCommande;
import carnetCommandes.Commande;
import carnetCommandes.LigneCommande;
import Usager.Profil;

/**
 * 
 * @author AJ75050 Julien Drolet-Noel
 * @version 1.0
 * 
 * Restaurant
 * 
 */

public class Restaurant {

	// Adresse du restaurant
	private Adresse adresse;
	
	// Menu du restaurant
	private Menu menuResto;
	
	// Nom du restaurant
	private String nom;
	
	// Carnet de commande
	//private CarnetCommande carnet;
	
	// Carnet de produit a preparer
	private Vector <LigneCommande> produitPrep;
	
	// Numero de restaurant
	private static int id = 0;
	private int idResto;
	
	// CONSTRUCTEUR PARAMETRE
	public Restaurant(String nom, Adresse adresse){
		
		this.nom = new String(nom);
		this.menuResto = new Menu();
		this.adresse = new Adresse(adresse);
		//this.carnet = new CarnetCommande();
		this.produitPrep = new Vector <LigneCommande>();
		idResto = id + 1;
	}
	
	// CONSTRUCTEUR PAR COPIE
	public Restaurant(Restaurant resto){
		
		this.nom = new String(resto.nom);
		this.menuResto = new Menu(resto.menuResto);
		this.adresse = new Adresse(resto.adresse);
		//this.carnet = resto.carnet;
		this.produitPrep = resto.produitPrep;
		idResto = id + 1;
	}
	
	
	// Retourne le menu du restaurant
	public Menu getMenu(){
		
		return menuResto;
	}
	
	// Retourne le profil du restaurant
	public Adresse getAdresse(){
		
		return adresse;
	}
	
	/**
	// Ajoute une commande dans la liste
	public void ajouterCommande(Commande commande){
		carnet.ajouteCommande(commande);
	}
	
	// Supprime une commande dans la liste
	public void supprimerCommande (int index) throws Exception{
		carnet.detruireCommande(index);
	}
	
	// Supprime une commande dans la liste
	public void supprimerCommande(Commande commande) throws Exception{
		carnet.detruireCommande(commande);
	}
	
	// Retourne une commande dans la liste
	public Commande getCommande(int index) throws Exception{
		return carnet.getCommande(index);
	}
	
	// Retourne une commande dans la liste
	public Commande getCommande(Commande commande) throws Exception{
		return carnet.getCommande(commande);
	}*/
	
	// Ajouter un produit a preparer
	public void ajouterProduitAPreparer(LigneCommande produit){
		produitPrep.add(produit);
	}
	
	// Supprimer un produit a preparer
	public void supprimerProduitAPreparer(int index) throws Exception{
		produitPrep.remove(index);
	}
	
	// Retourne un produit a preparer
	public LigneCommande getProduitAPreparer(int index) throws Exception{
		return produitPrep.get(index);
	}
	
	// Retourne le nom du restaurant
	public String getNom(){
		return nom;
	}
	
	// Retourne le id du resto
	public int getIdResto(){
		return idResto;
	}
	
	public String toString(){
		return getNom();
	}
	
	public String toStringDebug(){
		
		return "Nom : " + getNom() + " Profil : " + adresse.toString() + " Menu : " + menuResto.toString();
	}
	
	/**public CarnetCommande getCarnet(){
		return carnet;
	}*/
	
	public Vector <LigneCommande> getListeProduit(){
		return produitPrep;
	}
	
	public boolean restaurantLivraison (int noCommande){
		
		boolean dansLaCommande = false;
		
		for(int i = 0; i < produitPrep.size() && !dansLaCommande; i ++){
			if(noCommande == produitPrep.get(i).getCommande()){
				dansLaCommande = true;
			}
		}
		
		return dansLaCommande;
	}
}
